//import 'package:flutter/material.dart';
//import 'package:sqflite/sqflite.dart';
//
//import 'dart:async';
//import 'dart:convert';
//
//import 'package:meta/meta.dart';
//import 'package:my_flutter_github/model/User.dart';
//
//class DemoDbManager {
//  static final _VERSION = 1;
//  static final _NAME = "fullter_app.db";
//
//  static Database _dataBase;
//
//  ///初始化
//  ///async关键字声明该函数内部有代码需要延迟执行/异步执行
//  static init() async {
//    // open the database
//    var databasePath = await getDatabasesPath();
//    var path = databasePath + _NAME;
//    _dataBase = await openDatabase(path, version: _VERSION,
//        onCreate: (Database db, int version) async {
//      // When creating the db, create the table
//      await db.execute(
//          "CREATE TABLE Test (id INTEGER PRIMARY KEY, name TEXT, value INTEGER, num REAL)");
//    });
//  }
//
//  ///获取当前数据库对象
//  static Future<Database> getCurrentDatabase() async {
//    if (_dataBase == null) {
//      return init();
//    }
//    return _dataBase;
//  }
//
//  /**
//   * 表是否存在
//   */
//  static isTableExist(String tableName) async {
//    await getCurrentDatabase();
//    var res = await _dataBase.rawQuery(
//        "select * from Sqlite_master where type = 'table' and name = '$tableName'");
//    return res != null && res.length > 0;
//  }
//
//  static close() {
//    if (_dataBase != null) {
//      _dataBase.close();
//      _dataBase = null;
//    }
//  }
//}
//
//
/////数据库数据提供的抽象基类
//abstract class DemoBaseDbProvider {
//  bool isTableExits = false;
//  tableSqlString();
//  tableName();
//  tableBaseString(String name, String columnId){
//    return
//      '''
//       create table $name (
//        $columnId integer primary key autoincrement,
//      ''';
//  }
//
//  @mustCallSuper
//  prepare(String tableName, String createSql) async {
//      isTableExits = await DemoDbManager.isTableExist(tableName);
//      if(!isTableExits) {
//        var database = await DemoDbManager.getCurrentDatabase();
//        return await database.execute(createSql);
//      }
//  }
//
//  @mustCallSuper
//  open() async {
//    if(!isTableExits) {
//      await prepare(tableName(), tableSqlString());
//    }
//    return await DemoDbManager.getCurrentDatabase();
//  }
//
//  Future<Database> getDatabase() async {
//    return await open();
//  }
//}
//
//class DemoUserInfoDbProvider extends DemoBaseDbProvider {
//
//  ///table name
//  final String _tableName = "UserInfo";
//
//  final String columnId = "_id";
//  final String columnUserName = "userName";
//  final String columnData = "data";
//
//  int id;
//  String userName;
//  String data;
//
//  DemoUserInfoDbProvider();
//
//  @override
//  tableName() {
//    return _tableName;
//  }
//
//  @override
//  tableSqlString() {
//    return tableBaseString(_tableName, columnId) +
//    '''
//      $columnUserName text not null,
//      $columnData text not null)
//    '''
//    ;
//  }
//
//  Map<String, dynamic> toMap(String userName, String data) {
//    Map<String, dynamic> map = {columnUserName: userName, columnData:data};
//    if(id!=null){
//      map[columnId] = id;
//    }
//    return map;
//  }
//
//  DemoUserInfoDbProvider.fromMap(Map map) {
//    id = map[columnId];
//    userName = map[columnUserName];
//    data = map[columnData];
//  }
//
//  Future<DemoUserInfoDbProvider> _getUserProvider(Database db, String userName) async {
//    var list = await db.query(_tableName, columns: [columnId, columnUserName, columnData],
//      where: "$columnUserName = ?", whereArgs: [userName]
//    );
//
//    if(list.length > 0) {
//      var userInfoDbProvider = DemoUserInfoDbProvider.fromMap(list.first);
//      return userInfoDbProvider;
//    }
//
//    return null;
//  }
//
//  ///插入到数据库
//  Future insert(String userName, String eventMapString) async {
//    Database db = await getDatabase();
//    var userProvider = await _getUserProvider(db, userName);
//    if(userProvider != null){
//      var result = await db.delete(_tableName, where: "$columnUserName = ?", whereArgs: [userName]);
//      print(result);
//    }
//    return await db.insert(_tableName, toMap(userName, eventMapString));
//  }
//
//
//  //获取事件数据
//  Future<User> getUserInfo(String userName) async {
//    Database db = await getDatabase();
//    var userProvider = await _getUserProvider(db, userName);
//    if(userProvider != null) {
//      return User.fromJson(json.decode(userProvider.data));
//    }
//    return null;
//  }
//
//
//}
